// pages/upgrade/downloadSettings/index.js
import gaiaManager from '../../../utils/gaiaManager.js'
import bluetoothManager from '../../../utils/bluetooth.js'

Page({
  data: {
    // 页面状态
    isLoading: true,
    showError: false,
    errorMessage: '',
    
    // 设备连接状态
    deviceConnected: false,
    
    // 升级选项（从上一页传递）
    upgradeOptions: null,
    
    // 下载设置（与安卓版本DownloadSettings.kt一致）
    hardwareVersion: '',
    includeTags: [],
    excludeTags: [],
    createdAfter: '',
    
    // 标签选项（与安卓版本Tag.entries()一致）
    availableTags: [
      { value: 'stable', label: 'Stable' },
      { value: 'beta', label: 'Beta' },
      { value: 'alpha', label: 'Alpha' },
      { value: 'experimental', label: 'Experimental' }
    ],
    
    // 设备信息
    appVersion: '',
    appBuildId: ''
  },

  onLoad(options) {
    console.log('下载设置页面加载:', options)
    
    // 解析传递的升级选项
    if (options.options) {
      try {
        const upgradeOptions = JSON.parse(decodeURIComponent(options.options))
        this.setData({ upgradeOptions })
        console.log('升级选项:', upgradeOptions)
      } catch (error) {
        console.error('解析升级选项失败:', error)
        this.showError('Invalid upgrade options')
        return
      }
    }
    
    this.initPage()
  },

  onShow() {
    this.loadDownloadSettings()
  },

  // 初始化页面
  initPage() {
    this.setData({
      isLoading: true,
      showError: false,
      errorMessage: ''
    })
  },

  // 加载下载设置（与安卓版本DownloadSettingsFragment保持一致）
  async loadDownloadSettings() {
    try {
      this.setData({ isLoading: true })
      
      // 检查设备连接状态
      if (!bluetoothManager.isConnected) {
        this.showError('Device not connected')
        return
      }
      
      this.setData({ deviceConnected: true })
      
      // 获取设备信息
      await this.getDeviceInformation()
      
      // 加载持久化设置
      this.loadPersistentSettings()
      
    } catch (error) {
      console.error('加载下载设置失败:', error)
      this.showError('Failed to load download settings: ' + error.message)
    } finally {
      this.setData({ isLoading: false })
    }
  },

  // 获取设备信息（与安卓版本保持一致）
  async getDeviceInformation() {
    try {
      console.log('获取设备信息')
      
      // 获取应用版本
      const appVersionResponse = await gaiaManager.getApplicationVersion()
      if (appVersionResponse.success) {
        this.setData({ appVersion: appVersionResponse.data.version || 'Not available' })
      }
      
      // 获取应用构建ID
      const buildIdResponse = await gaiaManager.getApplicationBuildId()
      if (buildIdResponse.success) {
        this.setData({ appBuildId: buildIdResponse.data.buildId || 'Not available' })
      }
      
    } catch (error) {
      console.error('获取设备信息失败:', error)
      this.setData({
        appVersion: 'Not available',
        appBuildId: 'Not available'
      })
    }
  },

  // 加载持久化设置（与安卓版本保持一致）
  loadPersistentSettings() {
    try {
      const hardwareVersion = wx.getStorageSync('download_hardware_version') || ''
      const includeTags = wx.getStorageSync('download_include_tags') || []
      const excludeTags = wx.getStorageSync('download_exclude_tags') || []
      const createdAfter = wx.getStorageSync('download_created_after') || ''
      
      this.setData({
        hardwareVersion,
        includeTags,
        excludeTags,
        createdAfter
      })
      
    } catch (error) {
      console.error('加载持久化设置失败:', error)
    }
  },

  // 硬件版本变化（与安卓版本updateHardwareVersionPreference()一致）
  onHardwareVersionChange(e) {
    const value = e.detail.value
    console.log('硬件版本变化:', value)
    
    this.setData({ hardwareVersion: value })
    wx.setStorageSync('download_hardware_version', value)
  },

  // 包含标签变化（与安卓版本updateTagsPreference()一致）
  onIncludeTagsChange(e) {
    const values = e.detail.value
    console.log('包含标签变化:', values)
    
    this.setData({ includeTags: values })
    wx.setStorageSync('download_include_tags', values)
  },

  // 排除标签变化（与安卓版本updateTagsPreference()一致）
  onExcludeTagsChange(e) {
    const values = e.detail.value
    console.log('排除标签变化:', values)
    
    this.setData({ excludeTags: values })
    wx.setStorageSync('download_exclude_tags', values)
  },

  // 创建日期变化
  onCreatedAfterChange(e) {
    const value = e.detail.value
    console.log('创建日期变化:', value)
    
    this.setData({ createdAfter: value })
    wx.setStorageSync('download_created_after', value)
  },

  // 显示日期选择器（与安卓版本showDatePicker()一致）
  showDatePicker() {
    wx.showDatePicker({
      success: (res) => {
        console.log('日期选择结果:', res)
        const date = res.date
        this.setData({ createdAfter: date })
        wx.setStorageSync('download_created_after', date)
      }
    })
  },

  // 继续按钮点击（与安卓版本onPreferenceTreeClick()一致）
  onContinueClick() {
    console.log('继续按钮点击')
    
    // 创建文件过滤器（与安卓版本FilesFilters一致）
    const filters = {
      hardwareVersion: this.data.hardwareVersion,
      includeTags: this.data.includeTags,
      excludeTags: this.data.excludeTags,
      createdAfter: this.data.createdAfter
    }
    
    console.log('文件过滤器:', filters)
    
    // 导航到获取文件页面
    wx.navigateTo({
      url: '/pages/upgrade/getFiles/index?filters=' + encodeURIComponent(JSON.stringify(filters)) + '&options=' + encodeURIComponent(JSON.stringify(this.data.upgradeOptions))
    })
  },

  // 显示错误
  showError(message) {
    this.setData({
      showError: true,
      errorMessage: message,
      isLoading: false
    })
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.loadDownloadSettings().finally(() => {
      wx.stopPullDownRefresh()
    })
  }
})